home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 8
/
FM Towns Free Software Collection 8.iso
/
fb386
/
peer
/
peer.bas
< prev
next >
Wrap
BASIC Source File
|
1994-06-01
|
7KB
|
151 lines
10 '####################################################################
20 '##### #####
30 '##### 「BASICで、ダンプしてみましょう。」 Ver 0.10 #####
40 '##### #####
50 '##### File Name [PeeR](動詞) #####
60 '##### #####
70 '##### 企画・制作者 「たまふり ふる・ふる」 #####
80 '##### #####
90 '####################################################################
100 WIDTH 80,25:CONSOLE 3,16,1:COLOR 7,0,7,4:CLS:CLEAR
110 DEFINT A-Z:DIM SMY(15)
120 ME$="ofADRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F SUM 0123456789ABCDEF"
130 ME1$="ofADRESS +3 +2 +1 +0 +7 +6 +5 +4 +B +A +9 +8 +F +E +D +C SUM 0123456789ABCDEF"
140 IO$=" ADRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F SUM 0123456789ABCDEF"
150 '●コントロ-ルコ-ド表示(PRINT表示)
160 PRINT CHR$(&H1B)+"[0;1;32m"
170 '-キャラクタ-コ-ドの00hより-
180 CC1=5:CR&=&H8100
190 LOCATE CC1 ,21:PRINT MKL$(CR& )+" :"
200 LOCATE CC1 ,22:PRINT MKL$(CR&+&H01)+":"
210 LOCATE CC1 ,23:PRINT MKL$(CR&+&H02)+":";
220 CC1=12
230 LOCATE CC1 ,21:PRINT MKL$(CR&+&H03)+":"
240 LOCATE CC1 ,22:PRINT MKL$(CR&+&H04)+":"
250 LOCATE CC1 ,23:PRINT MKL$(CR&+&H05)+":";
260 CC1=19
270 LOCATE CC1 ,21:PRINT MKL$(CR&+&H06)+":"
280 LOCATE CC1+1,22:PRINT "BL"
290 LOCATE CC1 ,23:PRINT MKL$(CR&+&H08)+":";
300 CC1=26
310 LOCATE CC1 ,21:PRINT MKL$(CR&+&H09)+":"
320 LOCATE CC1 ,22:PRINT MKL$(CR&+&H0A)+":"
330 LOCATE CC1 ,23:PRINT MKL$(CR&+&H0B)+":";
340 CC1=33
350 LOCATE CC1+1,21:PRINT "CL"
360 LOCATE CC1 ,22:PRINT MKL$(CR&+&H0D)+":"
370 LOCATE CC1 ,23:PRINT MKL$(CR&+&H0E)+":";
380 CC1=40:FOR CRN&=&H810F TO &H8114 STEP 3
390 LOCATE CC1 ,21:PRINT MKL$(CRN& )+":"
400 LOCATE CC1 ,22:PRINT MKL$(CRN&+1)+":"
410 LOCATE CC1 ,23:PRINT MKL$(CRN&+2)+":";
420 CC1=CC1+7:NEXT
430 CC1=54
440 LOCATE CC1+1,21:PRINT "NK"
450 LOCATE CC1+1,22:PRINT "SN"
460 LOCATE CC1 ,23:PRINT MKL$(CR&+&H17)+":";
470 CC1=61:FOR CRN&=&H8118 TO &H811B STEP 3
480 LOCATE CC1 ,21:PRINT MKL$(CRN& )+":"
490 LOCATE CC1 ,22:PRINT MKL$(CRN&+1)+":"
500 LOCATE CC1 ,23:PRINT MKL$(CRN&+2)+":";
510 CC1=CC1+7:NEXT
520 CC1=75
530 LOCATE CC1 ,21:PRINT MKL$(CR&+&H1E)+":"
540 LOCATE CC1 ,22:PRINT MKL$(CR&+&H1F)+":"
550 '●CHR$No.表示
560 CC=2:FOR LOOP=0 TO &H1C STEP 3
570 LOCATE CC,21:PRINT RIGHT$("00"+HEX$(LOOP ),2)+"h="
580 LOCATE CC,22:PRINT RIGHT$("00"+HEX$(LOOP+1),2)+"h="
590 LOCATE CC,23:PRINT RIGHT$("00"+HEX$(LOOP+2),2)+"h=";
600 CC=CC+7:NEXT
610 LOCATE CC,21:PRINT RIGHT$("00"+HEX$(&H1E),2)+"h="
620 LOCATE CC,22:PRINT RIGHT$("00"+HEX$(&H1F),2)+"h=";
630 PRINT CHR$(&H1B)+"[0;1m";'-ESCコ-ドの指定解除-
640 '●アドレス入力
650 GOSUB 1430
660 LOCATE 0,1:PRINT SPACE$(39)
670 LOCATE 0,1:INPUT"スタ-ト オフセット アドレス:&H",STARTSET$
680 IF "I"=LEFT$(STARTSET$,1) OR "i"=LEFT$(STARTSET$,1) THEN
690 MID$(STARTSET$,1,1)=CHR$(&H20):GOSUB 1450
700 ENDIF
710 LE=LEN(STARTSET$)-2
720 IF LE>0 THEN MID$(STARTSET$,LE+1,2)="00" ELSE STARTSET$=""
730 SAD&=VAL("&H"+STARTSET$)
740 IF (DUP=-1) AND (SAD&<&H3000) THEN SAD&=&H3000'I/Oアドレス最小値
750 IF (DUP=-1) AND (SAD&>&H3F01) THEN SAD&=&H3F00'I/Oアドレス最大値
760 IF RDA=-1 THEN SL$=ME1$
770 '●ESCコ-ドで色指定
780 LOCATE 0,2:PRINT CHR$(&H1B)+"[7;32m"+SL$;
790 LOCATE 0,19:PRINT SL$;
800 LOCATE 0,20:PRINT " SUM "
810 PRINT CHR$(&H1B)+"[0;1m";'-ESCコ-ドの指定解除-
820 Y=57'-(Y=Gモ-ドY軸の初期値)-
830 CLS 5:CLS 1'-G画面、T画面の消去-
840 FOR LOP0=1 TO 16'---------------------LOOP0 16回-------------------
850 '●4バイト単位で、DATAを読む---------LOOP1 4回-----------
860 FOR LOP1=0 TO 12 STEP 4
870 DUM$=HEX$(PEEK(SAD&+LOP1,4))
880 ON DUP^2 GOSUB 1460
890 DUM$=RIGHT$("00000000"+DUM$,8):RDA$=RDA$+DUM$
900 '●DATA並べ-----------------------LOOP2 4回---------------
910 FOR LOP2=7 TO 1 STEP -2
920 DAT$=MID$(DUM$,LOP2,2) :DAT=VAL("&H"+DAT$)
930 SMY(NO)=SMY(NO)+DAT:SMY(NO)=VAL("&H"+RIGHT$("00"+HEX$(SMY(NO)),2))
940 SMX=SMX+DAT :SMX=VAL("&H"+RIGHT$("00"+HEX$(SMX),2))
950 LDA$=LDA$+DAT$+CHR$(&H20) :KDA$=KDA$+CHR$(VAL("&H"+DAT$))
960 NO=NO+1:NEXT:NEXT'-------LOOP2 LOOP1 NEXT(16byt 1行分)------
970 SMX$=RIGHT$("00"+HEX$(SMX),2):SMX=0:SAD&=SAD&+16
980 '●DATA、X軸SUM表示(SYMBOL表示)
990 ON RDA^2 GOSUB 1490
1000 LDA$=RIGHT$("00000000"+HEX$(SAD&-16),8)+SPACE$(1)+LDA$+":"+SMX$
1010 SYMBOL(0,Y),LDA$,1,1,7:LDA$="":RDA$=""
1020 '●CHR表示(PRINT表示)--------LOOP3 16回-----------------------
1030 ON RDA^2 GOTO 1080
1040 FOR LOP3=1 TO 16:KDM=ASC(MID$(KDA$,LOP3,1)):K_F1=KDM<&H20
1050 ON K_F1^2 GOSUB 1330
1060 NEXT'--------LOOP3 NEXT(コントロ-ルコ-ドを置き換える)-----
1070 LOCATE 61,Y/19:PRINT KDA$;
1080 KDA$="":NO=0:Y=Y+19:NEXT'-------LOOP0 NEXT(256 byt 一画面分)-------
1090 '●Y軸SUM表示(PRINT表示)
1100 LOCATE 9,20:PRINT
1110 FOR LOP4=0 TO 45 STEP 3'--------LOOP4 16回------------------
1120 LOCATE LOP4+9,20:PRINT RIGHT$("00"+HEX$(SMY(LOP4/3)),2)+CHR$(&H20)
1130 SMYY=SMYY+SMY(LOP4/3):SMY(LOP4/3)=0
1140 NEXT'---------------------------LOOP4 NEXT------------------
1150 LOCATE 57,20:PRINT":"+RIGHT$("00"+HEX$(SMYY),2):SMYY=0
1160 '●キ-入力選択
1170 KY$=INKEY$
1180 IF KY$="" THEN GOTO 1170'無入力
1190 IF KY$=CHR$(&H1F) OR KY$=CHR$(&H0D) THEN GOTO 740'上、RETURN、CTRL+M
1200 IF KY$=CHR$(&H2B) OR KY$=CHR$(&H17) THEN GOTO 740'+ 、前行
1210 IF KY$=CHR$(&H1E) OR KY$=CHR$(&H16) THEN GOSUB 1350'下、次行
1220 IF KY$=CHR$(&H2D) THEN GOSUB 1350'-
1230 IF KY$=CHR$(&H01) THEN GOTO 660 'CTRL+A
1240 IF KY$=CHR$(&H02) THEN GOSUB 1380'CTRL+B
1250 IF KY$=CHR$(&H0E) THEN GOSUB 1410'CTRL+N
1260 IF KY$=CHR$(&H09) THEN ON (DUP^2)+1 GOSUB 1450,1430'CTRL+I
1270 IF KY$=CHR$(&H12) THEN RDA=NOT(RDA) 'CTRL+R
1280 IF KY$=CHR$(&H1B) OR KY$=CHR$(&H05) THEN GOTO 1310'ESC,CTRL+[,CTRL+E
1290 GOTO 1170
1300 '● プログラム終了処理
1310 CLS:WIDTH 80:CONSOLE 0,25,0:END
1320 '● "."に、置き換える
1330 MID$(KDA$,LOP3,1)=CHR$(&H2E):RETURN
1340 '● 一画面戻る
1350 SAD&=SAD&-512:IF SAD&=<0 THEN SAD&=0
1360 RETURN 740
1370 '● 128byt戻る
1380 SAD&=SAD&-384:IF SAD&=<0 THEN SAD&=0
1390 RETURN 740
1400 '● 128byt先へ
1410 SAD&=SAD&-128:RETURN 740
1420 '● メモリ-ダンプ モ-ド
1430 DUP=0 :SL$=ME$:LOCATE 61,1:PRINT "メモリ-";:RETURN
1440 '● I/Oポ-トダンプ モ-ド
1450 DUP=-1:SL$=IO$:LOCATE 61,1:PRINT "I/O ";:RETURN
1460 '● I/Oポ-トを、読む
1470 DUM$=HEX$(INP(SAD&+LOP1,4)):RETURN
1480 '●読み込んだままのデ-タ表示
1490 FOR LOP5=1 TO 31 STEP 2:LRD$=LRD$+MID$(RDA$,LOP5,2)+CHR$(&H20)
1500 NEXT:LDA$=LRD$:LRD$="":RETURN